/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;

import bc.ProductoFacadeLocal;
import be.Componenteproducto;
import be.Producto;
import be.Productotipotrabajo;
import be.Tipotrabajo;
import java.io.Serializable;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.model.SelectItem;
import javax.inject.Named;

/**
 *
 * @author yzavaleta
 */
@Named("managedBeanProducto")
@SessionScoped
public class ManagedBeanProducto implements Serializable{
    @EJB
    private ProductoFacadeLocal productoFacade;
    private Producto objeto;
    private Producto objetoCrear;
    private List<Producto> lista;
    private List<Producto> listaFiltrada;
    private List<SelectItem> ListaItems = new LinkedList<SelectItem>();
    private HashMap<Integer, Producto> myMapItems = new HashMap<Integer, Producto>();

    public ManagedBeanProducto() {
        
    }

    public Producto getObjeto() {
        return objeto;
    }

    public void setObjeto(Producto objeto) {
        this.objeto = objeto;
    }

    public Producto getObjetoCrear() {
        return objetoCrear;
    }

    public void setObjetoCrear(Producto objetoCrear) {
        this.objetoCrear = objetoCrear;
    }

    public List<Producto> getLista() {
        lista = new LinkedList<>();
        for(Producto a:productoFacade.findAll()){
          if(a.getEstadoExistencia()==1){
        lista.add(a);
        }
        
        }
        
        return lista;
    }

    public void setLista(List<Producto> lista) {
        this.lista = lista;
    }

    public List<Producto> getListaFiltrada() {
        return listaFiltrada;
    }

    public void setListaFiltrada(List<Producto> listaFiltrada) {
        this.listaFiltrada = listaFiltrada;
    }

    public List<SelectItem> getListaItems() {
        ListaItems = new LinkedList<SelectItem>();
        myMapItems= new HashMap<Integer, Producto>();
        
       // System.out.println(" TAMAÑO DE PRODUCTOS"+productoFacade.findAll().size());
        
        for (Producto p : productoFacade.findAll()) {
          //  System.out.println(" entro a buscar");
          //  System.out.println("ESTADO EXISTENCIA"+ p.getEstadoExistencia());
            if(p.getEstadoExistencia()==1){
            myMapItems.put(p.getId(), p);
            
            ListaItems.add(new SelectItem(p, p.getCodigo() + " "+p.getDescripcion()));
            }
             
        }
        return ListaItems;
    }

    public void setListaItems(List<SelectItem> ListaItems) {
        this.ListaItems = ListaItems;
    }

    public HashMap<Integer, Producto> getMyMapItems() {
        return myMapItems;
    }

    public void setMyMapItems(HashMap<Integer, Producto> myMapItems) {
        this.myMapItems = myMapItems;
    }

     public void llenar_myItems() {
        try {
            myMapItems = new HashMap<Integer, Producto>();
            for (Producto p : productoFacade.findAll()) {
                
                if(p.getEstadoExistencia()==1){
                    myMapItems.put(p.getId(), p);
                ListaItems.add(new SelectItem(p,  p.getCodigo() + " "+p.getDescripcion()));
                }
                
              
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public Producto getObjeto(int id) {
        return myMapItems.get(id);
    }
    
    public void buscarProductos(Tipotrabajo objetoTipoTrabajo,ManagedBeanPresupuesto beanPresupuesto){
    // aqui vamos a llenar la lista
        System.out.println(" ENTRAMOS A FILTRAR EL OBJETO TIPO DE TRABAJO "+objetoTipoTrabajo.getId());
         myMapItems= new HashMap<Integer, Producto>();
        ListaItems = new LinkedList<SelectItem>();
        beanPresupuesto.getObjetoTrabajo().setProducto(new Producto());
       // System.out.println(" TAMAÑO DE PRODUCTOS"+productoFacade.findAll().size());
        int bandera=0;
        for (Productotipotrabajo p : objetoTipoTrabajo.getProductotipotrabajoList()) {
          //  System.out.println(" entro a buscar");
          //  System.out.println("ESTADO EXISTENCIA"+ p.getEstadoExistencia());
            if(p.getEstadoExistencia()==1){
                System.out.println(" Agregando producto "+ p.getProducto());
            myMapItems.put(p.getProducto().getId(), p.getProducto());
            
            ListaItems.add(new SelectItem(p.getProducto(), p.getProducto().getCodigo() + " "+p.getProducto().getDescripcion()));
            
            if(bandera==0){
            beanPresupuesto.getObjetoTrabajo().setProducto(p.getProducto());
            }
            
            }
             bandera=bandera+1;
        }
      
      
    }
    
    public List<Componenteproducto> getListaComponentesProducto(Producto objetoProducto){
        List<Componenteproducto> listaComponentes = new LinkedList<>();
        System.out.println(" estamos recibiendo en ManagedBeanProducto getListaComponentesProducto"+ objetoProducto);
        if(objetoProducto != null){
        listaComponentes=objetoProducto.getComponenteproductoList();
        }
        
        return listaComponentes;
    }
}
